perm filename MSG.SAV[PAT,LMM]1 blob sn#062959 filedate 1973-09-14 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00033 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00005 00002	PATTERN PROBLEMS:
C00006 00003	FROM: MASINTER Re:   <DEUTSCH>VHASH, FOR DICT FEATURE
C00008 00004	From: CARHART       Re:   CYCGEN (?)BUGS(?)
C00013 00005	Date:  4-SEP-73  404 From: TEITELMAN
C00014 00006	Date:  5-SEP-73 1950-PDT From: SRIDHARAN Re:   LABELLING PAPER
C00015 00007	Date:  5-SEP-73 1955-PDT  From: SRIDHARAN  Re:   NEW FILES
C00020 00008	FROM TEITELMAN RE: IN VALID
C00021 00009	Date: 30-AUG-73 2354 From: TEITELMAN Re:   MEMO
C00024 00010	From: BRYANT at BBN-TENEX
C00026 00011	Date:  4-SEP-73 2015 From: TEITELMAN Re:   SYSTEM DATE cc:   LISP USERS
C00027 00012	Date:  4-SEP-73 2016 From: TEITELMAN cc:   LAMPSON
C00028 00013	Date:  5-SEP-73 1147 From: TEITELMAN Re:NEW LISP,CHANGES IN I.S.cc:   LISP USERS
C00029 00014	Date: 10-SEP-73 2340 From: TEITELMAN
C00030 00015	Date: 11-SEP-73  056  From: TEITELMAN Re:   VARIOUS
C00031 00016	Date: 11-SEP-73  103 From: TEITELMAN
C00034 00017	Date: 11-SEP-73  209 From: TEITELMAN
C00035 00018	Date: 11-SEP-73  251 From: TEITELMAN
C00036 00019	Date: 11-SEP-73  308 From: TEITELMAN Re:   STRPOSL
C00037 00020	Date: 11-SEP-73  150 From: TEITELMAN 
C00038 00021	Date: 12-SEP-73  354 From: TEITELMAN
C00040 00022	Date: 12-SEP-73  518 From: TEITELMAN
C00041 00023	Date: 12-SEP-73 1719-EDT From: BRYANT at BBN-TENEX Re:SOME NOTES ON <NEWLISP>LISP AT BBN
C00044 00024	Date: 12-SEP-73  518 From: TEITELMAN Re: WORKING MY WAY THRU YOUR VARIOUS GOODIES.
C00045 00025	Date: 13-SEP-73 1609 From: TEITELMAN Re:   PRSTRUC
C00048 00026	Date: 13-SEP-73 1609 From: TEITELMAN
C00049 00027	Date: 13-SEP-73 1652 From: TEITELMAN Re:   FGETD
C00050 00028	Date: 13-SEP-73 1806 From: TEITELMAN Re:   NEW FEATURES IN ITERATIVE STATEMENTS
C00052 00029	1. FUTURE - LOOKUP LAST AND MEMB SO USER CAN MAKE FAST DECLARATION.
C00059 00030	re LP (IF ... (GO LP)) CLISPIFYING TO (WHILE XXX )
C00060 00031	RE PRETTY PRINT:
C00064 00032	RE IMPLICIT ARGUMENTS
C00068 00033	RECORDS:
C00086 ENDMK
C⊗;
PATTERN PROBLEMS:
ANOTHER PATTERN PROBLEM IS: THERE ARE
 TOO MANY EXTRA CHECKS WHEN A * IS GIVEN -- ALTHOUGH IT CANMATCHNIL,
 THE CHECK IS IMPLICITELY DONE AT THE END; THUS NO CHECK NEED BE DONE
 INTERNALLY.
   SOLUTION: CHANGED THE (* . &) OR (* . $) TO SOMEHTING ELSE WHICH
 CAN'T MATCH NIL, AND SO THAT THE WM IN (* . &) DOESN'T CALL THE
 LOWER MATCHWM WITH (& ...)

FROM: MASINTER Re:   <DEUTSCH>VHASH, FOR DICT FEATURE
From: MASINTER Re:   RECORDS
- - - -
MAKE THE RPLAC THING DEPEND ON LOCAL DECLARATIO RATHER THAN
DECLARATION AT TIME OF RECORD CALL....

COMPOSE SHUD TAKE NAM←X, DO SPELLING CORRECTION, AND CHECK FOR IRRELAVANT NAMES....

POSSIBLY (RPLACFQ (FIELD X) VAL), (/RPLACFQ (FIELD X) VAL)
         (FRPLACFQ (FIELD X) VAL),,,
WITH (RPLACFQ ...) DEFINED?, DWIMIFIED WITH TRANSLATION HIDDEN?
TO THE APPROPRIATE THING.
(TAKES ANYTHING,NOT JUST FIELD NAMES....)


SUGGESTION... IF X IS A FIELD NAME ALREADY, AND A NEW RECORD IS
DECLARED WITH X DIFFERENT... THEN CHANGE X IN THE OLD RECORD
TO RECNAME.X....   THE TRANSLATION OF VAR:X WILL THEN DO
A LOOKUP ON VAR TO SEE IF IT HAS BEEN DECLARED TO BE OF ONE
OF THE RECORDS.....
-------
From: JACKSON
Re:   RECORDS
- - - -

LARRY,
 
IT LOOKS LIKE YOU DESCRIBE THE SAME KIND OF CAPABILITY FOR HANDLING
AND CREATING DATA TYPES, THOUGH I SHOULD ADMIT THAT I DON'T KNOW
VERY MUCH ABOUT THE SUBJECT..
 
PHIL
From: CARHART       Re:   CYCGEN (?)BUGS(?)
OK, LARRY, WATCH THIS...
@LISP
GOOD MORNING.
←SYSIN(<SRID↑FS$)
(<SRIDHARAN>STRGEN.SYS;33)
←EDITE((0))
EDIT
*(1(STRUCFORM NOFV-RINGS (3 2 0 0 0 2)))
*P
((STRUCFORM NOFV-RINGS &))
*1 DO
LEVEL 0, FORMS:1-11
*PP
  [STRUCFORM LIST (STRUCFORM ATTACHBIVALENTS ((0 . 9)
                              (3 . 1))
                             (STRUCFORM CATALOG
                                        (2 0 0 0 2)))
             (STRUCFORM ATTACHBIVALENTS ((0 . 8)
                         (1 . 1)
                         (2 . 1))
                        (STRUCFORM CATALOG (2 0 0 0 2)))
             (STRUCFORM ATTACHBIVALENTS ((0 . 7)
                         (1 . 3))
                        (STRUCFORM CATALOG (2 0 0 0 2)))
             (STRUCFORM ATTACHBIVS&LOOPS ((1 . 2))
                        (NIL [(((1 . 2)) . 1]
                             NIL
                             [(((NIL . 1)) . 1]
                             NIL NIL)
                        (STRUCFORM CATALOG (3 0 1 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS ((2 . 1))
                        (NIL [(((1 . 2)) . 1]
                             NIL
                             [(((NIL . 1)) . 1]
                             NIL NIL)
                        (STRUCFORM CATALOG (3 0 1 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS ((1 . 1))
                        (NIL [(((2 . 2)) . 1]
                             NIL
                             [(((NIL . 1)) . 1]
                             NIL NIL)
                        (STRUCFORM CATALOG (3 0 1 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS NIL (NIL [(((3 . 2)) . 1]
                                                  NIL
                                                  [(((NIL . 1)) . 1]
                                                  NIL NIL)
                        (STRUCFORM CATALOG (3 0 1 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS ((1 . 1))
                        (NIL [(((1 . 2)) . 2]
                             NIL
                             [(((NIL . 1)) . 2]
                             NIL NIL)
                        (STRUCFORM CATALOG (4 0 2)))
             (STRUCFORM ATTACHBIVS&LOOPS ((1 . 1))
                        (NIL NIL NIL NIL NIL NIL)
                        (STRUCFORM CATALOG (2 0 0 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS NIL
                        (NIL NIL NIL NIL NIL NIL)
                        (STRUCFORM CATALOG (2 0 0 0 1)))
             (STRUCFORM ATTACHBIVS&LOOPS NIL (NIL [(((1 . 2)) . 1]
                                                  NIL
                                                  [(((1 . 1)) . 1]
                                                  NIL NIL)
                        (STRUCFORM CATALOG (3 0 1]
*↑C
@;TWO THINGS.  1)ABOVE, THERE IS A CALL TO ATTBVS&
 LOOPS WITH ALL-NIL ARGS.  I DON'T GET THAT.  2)THERE ARE REFS
@;TO CATALOGS (3 0 1 0 1) AND (2 0 0 0 1), BOTH OF WHICH
@;CONTAIN AN ODD NUMBER OF ODD-VALENT NODES, SO THERE HAS TO BE A FV
@;AROUND SOMEWHERE.
Date:  4-SEP-73  404 From: TEITELMAN
- - - -
THE NEW LISP HAS EVERYTHING FIXED EXCEPT FOR THE
COMPILER BUG, AND PARTIALLY CLISPIFIED EXPRESSIONS
CONTAIING ANGLE BRACKETS (BECAUSE OF JACKSONS CODE).
ALL OF YOUR PROBLEMS AND THE SUGGESTIONS I RESPONDED TO
YOU ABOUT IT ARE IMLEMENTED. CLISPIFY SHOULD WORK
ON ALL PARTIALLY CLISPIFIED EXPRESSIONS.
TRY TO BREAKIT AND LET ME KNOW HOW IT GOES.

WARREN
Date:  5-SEP-73 1950-PDT From: SRIDHARAN Re:   LABELLING PAPER
- - - -
I HEARD FROM DENNIS SMITH THAT YOU WERE STILL WORKING ON THE
LABELLING PAPER.  THE CYCGEN PAPER IS READY AND WE ARE MAKING THE
COPIES NEEDED TO MAIL THEM OUT. COULD YOU GIVE ME A REALISTIC
ESTIMATE OF WHEN YOU EXPECT TO HAVE THE SECOND PAPER DONE?  THANKS
MUCH. PLEASE ENLIGHTEN ME ON WHAT YOUR SCHEDULE IS AND WHAT YOUR
PLANS ARE FOR COMING FEW WEEKS.
Date:  5-SEP-73 1955-PDT  From: SRIDHARAN  Re:   NEW FILES
- - - -
THERE IS A NEW STRGEN.SYS;34 UNDER MY DIRECTORY.
RAY CARHART DISCOVERED A BUG IN THE LABELLER REMPERMS WAS BEING COMPUTED
WRONGLY.  I HAVE TRACED THE PROBLEM TO INCORRECT MAINTENANCE OF 
EDGE ORDERINGS AND NODE ORDERING.  THE ROUTINE CHECK SEEMS TO DEPEND 
CRITICALLY ON THESE ORDERINGS.  I HAVE FIXED TWO FUNCTIONS
LABELM -- WHEREIN I INDUCE A FORCED ORDERING OF THE CTENTRIES
IN ASCENDING ORDER OF NODENUMBERS; AND CLASSIFY3 -- ENSURING THAT THIS 
FUNCTION DOES NOT KILL THE ORDER IN CLASSIFYING.
GENLISP FILE HAS THE FUNCTION DIFF. THERE AGAIN AN XLIST WAS CHANGED
TO LIST.
BYE
FROM TEITELMAN RE: IN VALID
THE  IN  VALID  TRQANNSLATING AS IN (VALID X)
WAS A BUG IN THE CODE. IT SHOULD NEVER DO THIS
FOR IN/ON'S, TO'S, FROM'S, OR FOR, BIND, OR AS.
IT DOES MAKE SENSE FOR BY. E,G, FOR X IN Y BY CDDR. 

I WILL PROBABLY IMPLEMENT MOST OF YOUR SUGGESTIONS
IN THE MEMO.

THANX FOR TRACKING DOWN THE COMPILER PROBLEM.

WARREN
-------
Date: 30-AUG-73 2354 From: TEITELMAN Re:   MEMO
I HAVE BEEN PROCESSING YOUR EMO. HERE ARE THE VERDICTS:
(re LISP-MISC.MEMO)
(1) I IMPLEMENTED THE SUBPAIR CHANGE, AND ASSUMING BBN DOESNT
SQUAWK TOO LOUDLY IT WILL GO THROUGH. CHECK IT OUT IN NEXT LOAUP.

(2) NO ON TAILP.  THE VALUE OF
TAILP IS THE TAIL, SO RETURNING T WHEN GIVEN NIL AS ITS FIRST
AAGUMENT IS DANGEROUS, AND MAY INFFACT DISRUPT SOME
PROGRAMS THAT ALREADY UTILIZE THIS FACT AND THUS DONT
DO (AND X (TAALP X Y)) CHECKS. SUGGEST YOU WRITE YOUR
OWN VERSON, CALL IT TAILPRED, AND ALWAYS HAVE IT RETURN
T OR NIL.

(3) FIXED THE NTH PROBLEM,  NTH((A . B) 2) = B, NTH((A .  ) 3) = NIL.

(4) LET ME WAIT ON ANSWERING THIS FOR A WHILE.
(I DIDNT UNDERSTAND IT COMPLETELY)

(5) DONT AGREE WITH  CONC AND LCONC, SINCE THAT COSTS ANOTHER CONS,
AND ON SHORT LISTS, THIS IS MORE THAN THE COST OF CDRING
DOWN. I WOULD CONSIDER ADDING A TCOLLECT OR SOME SUCH THING.

(6) POSTPONE THIS. I LOOKED AT IT ONCE AND IT SEEMED HARD.
LETS TALK ABOUT IT.

(7) OK. EXCEPT THAT THAT WAY IT DOESNT GET ON THE HISTORY LIST.

(8) I FORWARDED THIS COMPLAINT TO BBN.

(9) I FIXED THIS.

(10) SORRY NO CAN DO. R AND RC ONLY WORK WITHIN
THE CURRENT EXPRESSION, THEY DONT DO UPS OR ANY SUCH THING.
SO THEY CANT WORK.  I COULD DO A SPECIAL
CHECK TO AVOID DOING THE CHAACTER RECOGNITION
THING FIRST, BUT SEEMS FRIVOULOUS..

WARREN
From: BRYANT at BBN-TENEX
Re:    HELP

COULD YOU GIVE ME THE DETAILS ON HOW I CAN USE YOUR
PRINTOUT ROUTINE AT AI LAB?  THAT IS, IF YOU DON'T MIND MY USING IT
ONCE A WEEK OR ONCE EVERY OTHER WEEK. THE QUESTIONS ARE:
  1.  TO WHAT FILE DO I SHIP MY FILES FROM BBN TO AI LAB.  I THINK I HAVE
       AN ACCOUNT THERE BUT AM NOT SURE.
  2.  ONCE THE FILE IS THERE, THEN WHAT DO I DO?


HAVE BEEN USING CLISP AND I REALLY LIKE IT.  THANX.

                                         PENNY
-------
From: BRYANT at BBN-TENEX
Re:   LISTING FILES AT AI LAB
- - - -
THANKS FOR THE INSTRUCTION - YOUR'RE REALLY GREAT.  I'LL TRY IT TODAY.
-------
Date:  4-SEP-73 2015 From: TEITELMAN Re:   SYSTEM DATE cc:   LISP USERS
- - - -

THE VALUE OF THE VARIABLE MAKESYSDATE WILL BE
THE DATE THE SYSTEM MADE. THIS SHULD AID IN
TRACKING DOWN WHICH SYSTEM YOUR SYSOUT WAS MADE FROM.

WARREN
-------
Date:  4-SEP-73 2016 From: TEITELMAN cc:   LAMPSON
- - - -
I REMEMBERED WHY I WANTED TO PRINT SMALL LISTS ON
THE SAME LINE: FOR THINGS LIKE
(IF (FOO X) AND (FIE Y) MEMB Z  ...

HOWEVER I THINK I CAN DISTINGUISH THESES CASES
FROM THE TROUBLESOME ONES.

WARREN
-------
Date:  5-SEP-73 1147 From: TEITELMAN Re:NEW LISP,CHANGES IN I.S.cc:   LISP USERS

THERE IS ANOTHER NEW LISP. THE PRETTYPRINT ALGORITHM
FOR CLISP HAS BEEN CHAGED SLIGHTLY. ALSO THERE
HAVE BEEN SOME NEW ITERATIVE STATEMENT OPERATORS,
ALWAYS, NEVER, AND THEREIS, PLUS SOME CHANGES TO
THE FUNCTION I.S.OPR DESCRIBED IN THE MEMO
<LISP>LISP.MEMO.

WARREN
-------
Date: 10-SEP-73 2340 From: TEITELMAN
Re:   LARRY,
WHY DIDNT YOU TELL ME ABOUT CLISPIFY ((PLUS 11 2 X)) 
GOING TO 11+2+X EARLIE? THATS A  BUG WHIC 
MUST HAVE BEEN INTRODUCED RECENTLY, BECAUSE
I AM SURE THATUSED TO WORK CORRECTLY. 
IT  ERTTAINLY WAS NOT INTENDED TO DO THAT.

WARREN
Date: 11-SEP-73  056  From: TEITELMAN Re:   VARIOUS
- - - -
ALICE IS LOOKING AT COMPILER PROBLEMS.
THE THING WITH ARG AND LAMBADA ATOM CERTAILY SHOULD WORK.
THIS WILL BE FIXED. AS FAR AS FUNCTION LAMBDA IN A BLOCK IS
CONCERNED,  CURRENTLY THIS IS NOT
TREATED AS PART OF THE BLOCK (NOR IS THERE ANYTHING IN
THE MANUAL TO LEAD YOU TO HIS BELIEF), HENCE IT
 IS COPILED AS A SEPARATE EXTERNAL FUNCTION. ALICE
IS LOOKING AT IT AND MAY CHANGE IT AS PE YOUR SUGGESTION,
EXCEPT I DONT AGREE THAT THE F/L SHOULD BE ADDED TO ENTRIES -
PASSING IT BACK OUT OF THE BLOCK SEEMS LIKE A BAD IIEA.
BUT MAYBE SHE WILL FIX IT.

MORE TO COME.
Date: 11-SEP-73  103 From: TEITELMAN
- - - -
(1) CAANOT GLOM COLLECT FOO -> COLLECT (FOO *IT*))  INTO CODE.
I AM SURE YOU WOULDNT WANT TO SEE $$TEMS AND $$TEM1'S IN YOUR CLISP,

(2) I DONT LIKE THE IDEA THAT IT WOLD BE HANDLED DIRFFERENTLY
IN THE CASE OF DO THAN IN COLLECT FOR EXAMPLE (AND NEITHER
WOULD YOU IF YOU THOUGHT AOUT IT), E.G.
FOR X IN L BY (FOO) COLLECT PRINT  WHERE  FOO SETS THE FREE VARIALBE
PRINT.  
I HAVE NO WAY OF DISTINGUISHING BETWEEN SYSTEM FUNCTIONS
AND USER COMPILED FUNCTIONS, AND I AM SURE THAT
WEREE I MTO MAKE THIS DISTINCTION, YOU WOULD NOT LIKE
IT EITHER.  I AM MORE NCLINED TO THINK THAT
WHEN IT IS THE NAME OF A FUNCTION AND NOT THE NAME OF A VARIABLE
I MAKE THE TRANSFORMATION WITHOUT BOTHERING YOU, PERIOD.
I THINK THAT YOU ARE THE ONLY PERSON THAT HAS EVER
ENCOUNTERED ANY PROBLEMS, AND YOUHAD TO STRAIN TO
CONSTRUCT A SITUATION WHERE IT FAILED, AND FURTHERMORE,
IT DEPENDEND ON THE VERY POOR PRACTICE OF HAVING THE SAME
NAME FOR FUNCTION AS FOR A VARIABE. IF I SET UP DWIM SO
THAT IT NEVER TOOK ANY CHANCES, IT WOULDNT BE VERY HELPFUL.
THE WHOLE THING IS PROBABILISTIC ANYWAY.

I AM GETTING THE IMPRESSION THAT YOU HAVE NOT THOUGHT
VERY MUCH ABOUT THIS PARTICULAR SITUATION, SINCE YOU
ARE VACILLATING BACK AND FORTH. LETS TALK ABOUT IT.

WARREN
-------
Date: 11-SEP-73  209 From: TEITELMAN
- - - -

YOUR CLISPIFY (PLUS 10 2) THING IS A RESULT OF A GLITCH
SEVERAL MOONS AGO. AT ONE TIME, CLISPIFY WAS DUMPED
OUT WITH THE DECLARATION FOR MIXED ARITHMETIC. AS
A RESULT, PLUS, TIMES, ETC. ALL MISTAKENLY HAVE
THE PROPERTY CLISPINFIX ON THERE PROPERTY LISTS.
YOU CANFIX THIS BY SIMPLY REMROPING IT, OR ELSE WAIT
TILL NEW SYSTEM.

WARREN
Date: 11-SEP-73  251 From: TEITELMAN

LARRY,

ALICE REPORTS THAT BLOCKCOMPILING CALL TO LAMBDA ATOM HAS BEEN FIXED.
SO PLEASE MAKE A NOTE THAT WHEN NEW SYSTEM COMES UP,
CHECK OUT THE PROBLEM YOU REPORTED TO ME, I FORGET
WHICH OF YOUR TWO FILES IT WAS IN. THIS
WAY I CAN FORGET ABOUT IT.

WARREN
Date: 11-SEP-73  308 From: TEITELMAN Re:   STRPOSL
- - - -

STRPOSL OPERATES MUCH MUCH FASTER IF YOU GIVE IT
A PREPARED BITTABLE. TAKE YOUR CAALS TO STRPOSL IN
MATCHBLOCK AND REPLACE THE LIST BY AN ARRAY
OBTAIED FROM CALLING FUNCTION MAKEBITTABLE ON THAT LIST.
SEE ME FOR MORE INFO.

WARREN
Date: 11-SEP-73  150 From: TEITELMAN 
- - - -
LARRY,

IN ORDER TO MAKE PRSTRUC WORK CORRECTLY ON PATTERNS,
I MUST DO A GETHASH ON EACH LIST FOR WHICH CAR IS
NOT THE NAME OF A FUNCTION. JUST THOUGHT
YOUD LIKE TO KNOW.

WARREN
Date: 12-SEP-73  354 From: TEITELMAN
- - - -
LARRY,

THERE IS A NEW LISP ON MY DIRECOTRY CAALED LISPX.SAV

FOR THE TIME BEING, THE
PAATIAL CLISIFICATION PROBLEM IS AVIDED BY RETURNING TO
THE OLD STATE. ALL OF THE PROBLEMS YOU REPORTED TO ME
THAT AFFECT MY TUFF HAVE BEEN FIXED. IN ADDITION, YOUR
BLOCK COMPILING PROBLEM WITH THE ARG HAS BEEN FIXED
(BUT YOU SHOULD CHECK IT OUT). THE FUNCTON LAMBDA PROBLEM
HAS NOT YET BEEN FIXED.

******DO NOT PUT COMMENTS INSIDE OF CONS OR NCONC******
COMMENTS SHOULD ONLY BE PUT WHERE THEY ARE SAFE. 
IT IS QITE OSSIBLE THAT COMPILATION OF CONS AND NCONC
WILL BE CHAGED OUT FROM UNDER YOU. THIS IS VERY
POOR PRACTICE ON YOUR PART.

WARREN
Date: 12-SEP-73  518 From: TEITELMAN

WORKING MY WAY THRU YOUR VARIOUS GOODIES.

ANYWAY IN ONE  XAMPLE YOU STATE
(FOR X IN (--) WHEN X }FMEMB LAST-PRINTSTRUCTURE:1 DO
(PRINT X)) FAILS.
I FOUND A FEW PROBLEMS WITH THAT. HOWEVER,
YOU DO KNOW THAT LAST-PRINTSTRUCTURE:1 WILL ALWAYS BE TREATED
AS (IDIFFERENCE LAST (CAR PRINTSTRUCTURE)), I.E.
IT EITHER BREAKS IT APART OR IT DOESNT, NOTHING HALFWAY.
YOU SHULD HAVE WRITTEN LAST-PRINTSTRUCTURE :1.

WARREN
Date: 12-SEP-73 1719-EDT From: BRYANT at BBN-TENEX Re:SOME NOTES ON <NEWLISP>LISP AT BBN
FOLLOWING ARE SOME THINGS WHICH I NOTICE AND FIND ANNOYING:
   1.  FILES CREATED IN <NEWLISP> CANNOT BE READ FROM REGULAR LISP.  THIS
       MEANS THAT IF THE FILES ARE  SENT TO SITES WITH NO <NEWLISP> I 
       CAN'T EVEN GET ON FIRST BASE.
   2.  IF I USE 'CL' COMMAND IN THE EDIT I OCCASIONALLY GET BACK ON
       'COND' THENELSE WITH NO PACE BETWEEN 'THEN' AND 'ELSE'. 

       SO WHEN I INTERPRET THE CL'ED FUNCTIONS I GET ERRROR.  THERE
      WAS ONE CASE IN WHICH A PAIR OF PARENTHESIS WAS MISSING
        THEREBY PUTTING THE EXPRESSION ON A WRONG LEVEL - BUT I CAN'T
        SEEM TO RECONSTRUCT THIS PROBLEM.
   3.  I DID THE FOLLOWING*
         (FP-RULES ← '(((EQUAL A B..............)
       WHICH PROMTED WITH A MESSAGE
          ≠≠(IN RULES) TREATED AS CLISP     U.B.A.    FP
        THE EXPRESSION WAS THEN CHANGED TO
         ≠(IDIFFERENCE FP (SETQQ RULES (((EQAUL A B.........)
        THAT DWIM INTERPRETATION STINKS, BECAUSE IT'S PRETTY OBVIOUS
        WHAT I MEAN.  OF COURSE IF I DO (SETQ FP-RULES....) IT WORKS.


HOPE MY COMMENTS ARE OF USE.  I TRY AVOIDING THESE TRAPS BUT IT
WOULD BE NICE IF THEY WEREN'T TRAPS AT ALL.   ALSO, NOTE THAT
THE SECOND ERROR IS BAD SINCE I CAN'T USE  CL TO MAKE
A NICE LISTING, WHICH IS WHAT I WANT TO USE  CLISP FOR.
Date: 12-SEP-73  518 From: TEITELMAN Re: WORKING MY WAY THRU YOUR VARIOUS GOODIES.

ANYWAY IN ONE  XAMPLE YOU STATE
(FOR X IN (--) WHEN X }FMEMB LAST-PRINTSTRUCTURE:1 DO
(PRINT X)) FAILS.
I FOUND A FEW PROBLEMS WITH THAT. HOWEVER,
YOU DO KNOW THAT LAST-PRINTSTRUCTURE:1 WILL ALWAYS BE TREATED
AS (IDIFFERENCE LAST (CAR PRINTSTRUCTURE)), I.E.
IT EITHER BREAKS IT APART OR IT DOESNT, NOTHING HALFWAY.
YOU SHULD HAVE WRITTEN LAST-PRINTSTRUCTURE :1.

WARREN
Date: 13-SEP-73 1609 From: TEITELMAN Re:   PRSTRUC
LARRY,

IT WAS A SIMPLE SILLY PROBLEM AND IS NOW FIXED.
ALSO 
I ISNTALLED A VARIABLED CALLED INVISIBLEVARS WHICH
IS INITIALIZED TO THINGS LIKE ($$TEM $$VAL  ETC.)
I.E. THINGS NOT TO APPEAR ON VARS. IF YOU WANT TO
ADD SOME OF YOUR STUFF THERE, YOU CAN DO IT IN MATCH - INITIALLY,
AND THEN TELL ME WHAT TO PUT IN AND I WILL
DO IT IN PRSTRUC. NO MAYBE, SINCE MATCH IS LOADED
SEPARATELY, PUT ON YOUR VARS
AN ADDVARS INVISIBLEVARS  WITH THE APPROPRIATE NAMES.

WARREN
(response to:)
I DUNNO WHAT YOU DID, BUT...

YOU MUST HAVE PUT THE WRONG THING AROUND THAT GETHASH ON THE NEW
PRINTSTRUCTURE, CAUSE IT NOW, I BELIEVE, PUTS THE WHOLE THING
ONTO TREELIST, CAUSING WRETCHED THINGS TO HAPPEN TO THE HIDDEN CODE,
THE PRINTSTRUCTURE PRINTOUT, AND INCIDENTALLY, THE END PART OF
OF THE CLISP: 'D CODE WHICH WAS NOT COPIED...
I.E.
DEFINE(((TEST(X)(FOR I FROM 1 TO X DO (FOO I))
]

and after dwimifying...

PRINTSTRUCTURE(TEST)

TEST   PROG
	$$VAL
	SETQ	I
... ETC... AND, THEREAFTER, EVERY FOR IS TRANSLATED WITH AN EXTRA
(FOO) AT THE END...

THE VALUE RETURNED BY THE FUNCTION FGETD AND THE MACRO EXPANSION
OF FGETD ARE DIFFERENT FOR SUBRS!!! (FGETD RETURNS (0 . 915) WHILE
THE COMPILATION OF
(TEST (LAMBDA(X)(FGETD X]   ... RETURNS JUST 915.

				LARRY
Date: 13-SEP-73 1609 From: TEITELMAN
- - - -
NEW PRSTRUC IS ON PRSTRUC.COM ON MY DIRECTORY IF YOU WANT TO TRY IT
BEFORE THE NEXT LOADUP.

WARREN
-------
Date: 13-SEP-73 1652 From: TEITELMAN Re:   FGETD

THAT IS A FEATURE! GETD DOESSA CONS FOR EACH CALL ON
A SUBR. FGETD WAS INTENDED TO BE A QUICK CHECK
TO SEE IF A FUNCTION HAD A DEFINITION. 

WARREN
-------
Date: 13-SEP-73 1806 From: TEITELMAN Re:   NEW FEATURES IN ITERATIVE STATEMENTS
cc:   DEUTSCH, KAPLAN, LAMPSON, MCCREIGHT
- - - -


I HAVE INSTAALED SYNONYMS IN ITERATIVE STATEMENTS.
IF I.S.OPR IS CALLED WITH SECOND ARGUMENT ATOMIC,
IT MAKES FIRST BE SYNONYMOUS WITH SECOND.
IN THIS CASE, THE ARGUMENT CAN BE ANY OF THE
ALREADY EXISTING I.S. OPERATIVES. E.G.
BY PERFORMING I.S.OPR(FIND FOR)  AND
I.S.OPR(SUCHTHAT THEREIS)
ONE CAN WRITE:
FIND X FROM 1 TO 10 SUCHTHAT X↑2=25
AND GET BACK 5 AS THE VALUE.

CURRENT SYNONYMS ARE:  WHERE FOR WHEN,
FIND FOR FOR, SUCHTHAT FOR THEREIS, AND ISTHERE FOR THEREIS,
E.G.
ISTHERE NUMBERP IN X   WILL
RETURN NIL OR THE NUMBER.

ALSO, I HAVE USED THIS FEATURE TO ELIMINATE THE
CHECKING FOR BOTH UPPERCASE AND LOWERCASE IN DWIMIFYING,
I.E. for IS ESSENTIALLY TREATED AS A SYNONYM FOR FOR.

WARREN
1. FUTURE - LOOKUP LAST AND MEMB SO USER CAN MAKE FAST DECLARATION.
6.  LOOK UP RPLACA AND RPLACD SO USER CAN DECLARE FOR FRPLACA AND
/RPLACA, ETC.  IF YOU WANT TO INSTALL LOOKUP NOW, DO 

(CLISPLOOKUP FN-NAME NIL NIL (GETP FN-NAME 'LISPFN)),

OR TO BE MORE EFFICIENT, SINCE MOST FUNCTIONS WONT HAVE THEIR OWN
DECLARATIONS, INCLUDE THE CODE FROM THE FUNCTION CLISPLOOKUP (WHICH
IS CONTAINED IN THE FILE CLISP) INYOUR OWN BLOCK. CLISPLOOKUP0 IS
OUTSIDE OF THE DWIMBLOCK SINCE IT IS ONLY CALLED WHEN A FULL LOOKUP
HAS TO BE DONE.  IN MOST CASES,  THE SIMPLE FUNCTION SHOWN IN
CLISPLOOKUP WILL SUFFICE.


2. USE ASSOC WHERE POSSIBLE, AND LOOK IT UP ALSO SO USER CANUSE
FASSOC.

3. INSTALL A FLAG OR NEW E.P. (ELEMENTARY PATTERN) CORRESPONDING TO
$ THAT DOES NOT CONTINUE SEARCHING ONCE IT SUCCEEDS (FUZZY CONCEPT),
E.G. ($ ('A $2) $) WOULD BE AN ASSOC WITH A CHECK ON THE LENGTH OF
THE EEMENT,  BUT WOULD NOT CONTINUE SEARCHING FOR ANOTHER 'A,
SIMILARLY ($ 'A 'B $) WOULD BE (EQ (CADR (MEMB 'A X) 'B)). I THINK
THE DEFAULT FOR $ SHOULD BE THIS WAY,  AND THAT SOMETHNG LIKE $$
WOULD MEAN SEARCH YOUR ASS OFF.

7. CHANGE THE INITIAL VARIABLE DEFAULT TO = AND POSTPONE-SETQ-FLG TO
NIL,  I.E. DONT POSTPONE.

8. MAKE SURE THAT POSTPONE SETQ FLG REALLY WORKS. FOR EXAMPLE IN THE
PATTERN (A←($ !B←'FOO ($ !==C))), IF POSTPONESETQFLG IS NIL,  THEN
THERE IS NO NEED FOR DUMMY VARIABLES NOR FOR A PROG,  I.E. YOU CAN
USE THE VARIABLES MENTIONED IN THE PATTERN FOR STORING TEMORARY
RESULTS.

9. X:($1 *←!(3 4) 5) CAN YOU IMPROVE THE DIAGNOSTIC SO AS NOT TO BE
SO SCARY? ALSO WHY ARE 3 AND 4 QUOTED AND 5 DEFAUTED (ACTUALLY 3 4
AND 5 SHOULD BE LEFT AAONE SINCE THEY ARE NUMBERS, BUT I PRESUME IF
THEY HAD BEEN LITATOMS THE SAME WOULD HOLD)

10. WHY DOES X:($ !X←(3 4) $) GO TO A PROG, BUT X:($ X←(3 4) $) TO A
SOME?

12. *****WRONG - X:($ !(A B) C D) ALSO X:($ !($1 $2) $3) X:($ !(A B)
C D $)

13. LOOK AT X:($ Z $) WITH DEFAULT FOR ASSIGNMENT. I DONT UNDERSTAND
THE SOME WITH (LAMBDA (X) T)

14. X:($ 'A !* $1) COULD BE BETTER.

15. IN YOUR WRITEUP, DID YOU MEAN THAT !  WORKS ON ALL PATTERNS THAT
APPEAR AS THE LAST ELEMENT, BUT ONLY !* AND !(SUBPATTERN) WORK IN
THE INTERIOR? I THINK THIS IS WHAT YOU MEAN, I.E. != OR !== IS OK AS
THE LAST E.P.  ALTHOUGH YOU SAY ONLY !* AND !(SUBPATTERN) ARE
IMPLEMENTED.

16. I GUESS YOU KNOW THAT ($ X←!(PATTERN) $) DOESNT WORK.

18. ($1 Y←$3 $1) DOESNT WORK. I THINK THIS IS REALLY A CASE OF A
HIDDEN ! IN THE MIDDLE, BUT IT ISNT EXPLAINED IN THE WRITEUP, AND I
EITHER HAVE TO EXPLAIN IT OR ELSE IT HAS TO WORK.

19. ****WRONG ($1 'C Y←$1 $) DOESNT DO CDDR CHECK.

21. ($ ! 'A) SHOULD BE (EQ (CDR (LAST --)) NOT (AND (SETQ --) (EQ
--)) I WOULD LIKE TO SEE YOU TRY HARD TO AVOIDE UNNECESSARY PROGS
AND DUMMY VARIABLES.

23. ALSO INSTALLING AN (AND) AND (OR) + AND | I.E. ONE MIGHT SAY

 =X|=Y , =X(OR)=Y , ¬=X(AND)¬=Y , ETC.

I MENTION THESE BECAUSE IN LOOKING THROUGH MY LISTINGS FOR AN
EXAMPLE TO USE IN MY PAPER, I WAS MOST OFTEN FRUSTRATED BECAUSE WE
DID NOT HAVE ¬, &, OR |.

→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→WHAT DOES THIS MEAN?

4. CHECK AND SEE WHERE EXTRA SPACES MAKE A DIFFERENCE. IN PARTICULAR
($ = = X $) AND ($ == X $) ARE NOT EQUIVALENT. THIS SHOULD BE FIXED.


→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→DONE

5.  DONT QUOTE NUMBERS. EVEN IF DEFAULT IS FOR QUOTE OR ASSIGNMENT,
NUMBERS SHULD ALWAYS GO IN AS JUST NUMBERS.

11. X:($1 !X←$1 $2) DONT NEED THE EXTRA T, ALSO FOR X:($ !X←... $)
IN GENERAL, THERE ARE MAAY CASES WHERE YOU ALREADY KNOW THAT THE
RESULT OF THE SETQ IS NON NIL, SO YOU DONT HAVE TO PUT IN THAT T ATT
THE END.

20. USE NULL FOR NOT IN TRANSLATION WHEN WHAT IS MEAAT IS EQ NIL.
I.E. FOR ALL CASES IN THE CURENT CONFIGURATION..

22. THINK ABOUT INSTALLING A ¬ NOT PATTERN- I.E. TILDE, E.G. ¬=FOO,
¬&@NUMBERP, ETC.

→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→NOT GOING TO DO

17. ($1 'A $ 'B) GOES TO (AND (EQ --) (EQ (CAR (LAST (CDDR X)) 'B) I
THINK ON LAST'S, YOU MIGHT AS WELL JUST SAY (LAST X) AS (LAST (CDDR
X)) - I UNDERSTAND THAT IN THE CASE OF MEMBS IT MAKES A DIFFERENT,
E.G. ($1 'A $ 'B $),  YOU WOULD WANT TO SAY (MEMB 'B (CDDR X)) SINCE
THE FIRST ELEMENT MIGHT BE B.
re LP (IF ... (GO LP)) CLISPIFYING TO (WHILE XXX )
WOULD YOU HAVE BEEN SATISFIED IF
IT CLISPIFIED TO
LP (WHILE & DO --) -- ...)?

RE PRETTY PRINT:
A FORM WITH LONG ATOMS IN
NEAR THE RIGHT HAND MARGIN THIS WILL FAIL. 

I CAN
 (A) MAKE THE AVERAGE LENGTH OF ATOMS CURRENTLY SET TO 5 BE A VARIABLE
AVAILABLE TO YOU
 (B) USE A MORE CONSERVATIVE ESTIMATE CLOSE TO THE RIGHT HAND MARGIN
 (C) PUT IN MORE THAN ONE SPACE BETWEEN STATEMENTS ON THE SAME LINE.


GE RTURN AFTER IT.
IN YOUR FIRST CASE, WITH FOO,
SINCE VAR←, <'CDDDR VAR> AND I← ARE ALL ATOMS,
THEY ARE PRINTED ON THE SAME LINE. YOU WOULDNT WANT THEM IN
COLUMNS. AFTER AN ATOM ENDING IN A CLISP OPERATOR,
PRETTYPRINT NEVER SPACES, SO THERE IS NO PLACE IN THAT FUNCTION
THAT IS EFFECTED BY THE DECISION TO TREAT LINEAR LISTS
AS ATOMS. FURTHERMORE, EXPECTING PRETTYPRINT
TO KNOW THAT AFTER VAR>   THE END OF A
"CLUSTER" WAS REACHED, REQUIRES IT TO HAVE ALL THE INFORMATION
THAT DWIMIFY HAS, AND MORE.

IN FIE, THE SITUATION IS A LITTLE MORE SUSCEPTIBLE
TO ANALYSIS, AND MAYBE YOU'LL SUGGEST SOMETHING.
PRETTYPRINT PROCEEDS BY FIRST ASKING WHETHER THE
EACH LIST CAN FIT BEFORE DECIDING WHETHER TO START A
NEW LINE.
IN FIE, THE PROBLEM IS THAT A VERY LONG STRING APPEARS AT THE RIGHT
MARGIN. IF THIS WERE A NORMAL ATOM, NO PROBLEMS
WOULD OCCUR, SINCE THERE IS ROOM FOR SEVEN CHARACTERS.

THE PROBLEM GOES AWAY WHEN I INSTALLED THE SPACE TWO
CHARACTERS BETWEEN LISTS, SINCE THEN THERE IS ONLY ROOM FOR
THREE CHARACTERS, AND THE FITP ALGORITHM DETECTS THIS.
ANYWAY, I GUESS STRINGS OCCUR SUFFICIENTLY RARELY, AND
THEIR STATISTICS ARE SUFFICIENTLY SCREWED UP THAT
THEY DESERVE A MORE ACCURATE ACCOUNTING, SO I MADE FITP
ACTUALLY DO AN NCHARS WHEN IT ENCOUNTERS A STRING, AND
IN THIS CASE, IT WILL PRINT EVERYTHING ON THE SAME LINE
IF IT FITS, AND IN YOUR CASE, PRINT A CARRIAGE RETURN
BEFORE THE (PRINT ...)
BEFORE WE CLOSE THIS SUBJECT, YOUR COMMENT
BREVITY IS NICE, LEGIBILITY IS IMPORTANT, LEADS ME TO BELIEVE
THAT YOU THINK THIS "JUST HAPPENED" I.E. THE PRINTING
OF IFS AND THENS THIS WAY. NOT ONLY DID IT TAKE A FAIR
AMOUNT OF THINKING ABUT AND EXPERIMENTING TO DECIDE WHAT
 LOOKED NICE (PLUS CONSULTING MANY OTHERS ON THEIR OPINION)
BUT AN AWFUL LOT OF HACKING WITH SOME VERRY MESSY CODE.
I HAVE PROBABY SPENT IN THE VICINITY OF 50 HOURS ON
PRETTYPRINT TO MAKE IT WORK ON CLISP  THE WAY
IT DOES. CONSTRUCTIVE SUGGESTIONS ARE WELCOME.


(I THOUGHT I WAS DONE LAST NIGHT).

RE IMPLICIT ARGUMENTS
TIONS THAT ARE AFFECTED BY CONTEXT AS
REQUIRING INTERACTIONS, BUT AM NOT SURE WHAT TO DO IN
THIS CASE. I PERSONALLY FROWN VERY STRONGLY ON USING
THE SAME NAME FOR BOTH FUNCTIONS AND VARIABLES, AND
***TAKE NOTE*** THE PROBLEM WILL GET WORSE WHEN
WE START HAVING MORE SOPHISTICATED CORRECTIONS, I.E.
IF ONE IS TRYING TO WRITE A SYSTEM TO DISAMBIGUATE
AND THE USER IS INSERTING A LOT OF AMBIGUITY ....

WOULD YOU AGREE THAT IF THE 'FN' IN QUESTION WERE
LIKE CDR, OR ATOM, OR NUMBERP (AS OPPOSED TO VALID
WHICH YOU DEFINED), THAT THE CORRECTION SHOULD
BE DONE AUTOMATICALLY, AND SHOULD THE USER BE  INFORMED?

CALL ME WHEN U GET A CHANCE AS I  WANT TO DISCUSS
THE CLISPIFY PROBLEM WITH YOU ALSO.

X FOR THEN OR THEREIS. HOWEVER,
I HAVE INSTALLED A FEATURE WHICH LETS YOU DEFINE
NEW I.S.TYPES SUCH AS SUM PRODUCT ETC., OR
EVEN CHANGE COLLECT. THERE IS A FUNCTION CALLED
I.S.OPR WHICH TAKES FOUR ARGUMENTS: NAME,
FORM, INIT, AND VAL.
FORM IS THE THING TO BE DONE EACH TIME. * STANDS
FOR THE ARGUMENT TO THE OPERATOR, AND $$VAL INDICATES
THE VALUE, E.G. FOR
RCOLLECT, FORM WOULD BE (CONS * $$VAL), FOR
COLLECT AS IT NOW STANDS (NCONC1 $$VAL *).
INIT IS OPTIONAL AND IS AN INITIALIZING FORM, E.G.
FOR SUM, INIT WOULD BE 0, FOR PRODUCT IT WOULD BE 1.
VAL IS ALSO OPTIONAL AND SPECIFIES A RETURN VALUE.
IF NIL, (RETURN $$VAL) IS SUPPLIED. HOWEVER,
YOU MIGHT DEFINE COLLECT AS
I.S.OPR(COLLECT (CONS * $$VAL) NIL (DREVERSE $$VAL))

I.S.OPR DOES ALL THE STUFF TO THE PROPERTY LISTS,
AS WELL AS ADDING THINGS TO SPELLING LISTS ETC.
IT ALSO HANDLES THE LOWER CASE VERSION.
IT IS UNDOABLE.
I'M SURE YOU'LL GO BATSHIT.
I'LL LET YOU KNOW AS SOON AS I LOAD UP.

.MEMO

R $$VAL, E.G. FOR SUM INIT IS 0.
VAL IS OPTIONAL AND SPECIFIES THE RETURN VALUE.
IF NIL, (RETURN $$VAL) IS SUBSUMED. 

EXAMPLES:
TO DEFINE A VERSION OF COLLECT WHICH USES CONS INSTEAD
OF NCONC1 AND THEN REVERSES THE VALUE
I.S.OPR(RCOLLECT (CONS * $$VAL) NIL (DREVERSE $$VAL))

TO DEFINE PRODUCT:
I.S.OPR(PRODUCT (ITIMES * $$VAL) 0)
TO DEFINE A VERSION OF COLLECT WHICH USES TCONC:
I.S.OPR(TCOLLECT (TCONC $$VAL *) NIL (CAR $$VAL))

I.S.OPR PERFORMS THE APPROPRIATE PROPERTY LIST
UPDATING, AS WELL AS ADDING NAME TO THE VARIOUS
SPELLING LISTS. I.S.OPR ALSO TAKES CARE OF
THE LOWER CASE VERSION OF NAME.
RECORDS:

THINGS ARE WORKING QUITE WELL; THERE ARE JUST A FEW THINGS I NEED...

1) CAN YOU, IN CLISPIFY, AFTER CHECKING THE GETHASH AND FINDING
SOMETHING, CHECK IF THE CAR OF THE FORM IS
 (A) EITHER COMPOSE OR compose
   (B) (LISTP (GETP (CAR FORM) (QUOTE ACESSFN]
  AS BOTH COMPOSE AND THE FIELD REPLACES ARE DONE BY FIRST
  DWIMIFYING AND THEN HIDING THE MEANING UNDERNEATH....

2) I DON'T KNOW HOW TO GET "COMPOSE" AND "USING" TO LOWERCASE
ON CLISPIFICATION... THE CLISPWORD PROP, PUTTING ON
CLISPWORDS, DOESN'T SEEM TO WORK.... I LOOKED AT THE CODE AND IT
LOOKS LIKE A LITTLE DIDDLE... JUST A GLITCH
THAT I DON'T THINK CAN BE DONE WITHOUT MODIFYING YOUR CODE...

3) I've implemented some of it via DWIMUSERFN... if you'd
   incorporate that into the dwim stuff, we could leave
  DWIMUSERFN for users...

.....

the files are RECORD and RECORD.COM, with copies on <NEWLISP>

try it!.
			LARRY

IT'S OK IF FGETD RETURNS DIFFERENTLY FROM GETD ON SUBRS, AS LONG
AS AN INTERPRETED (FGETD X) AND A COMPILED (FGETD X) RETURN
THE SAME VALUE... (OR THAT THE FORMER CAUSES AN ERROR)...

			LARRY